﻿Imports FinanceiroDAL
Public Class PlanoContasBLL
    Dim objDAL As New PlanoContasDAL
#Region "Propriedades"
    Property Codigo As Integer
    Property Descricao As String
    Property GrupoCodigo As Integer
    Property tipo As String
    Property Status As Integer
#End Region
#Region "Construtores"
    Sub New()

    End Sub
    Sub New(ByVal codigo As Integer)
        carrega(codigo)
    End Sub
    Sub New(ByVal cod As Integer, ByVal descr As String, ByVal grupCod As Integer, ByVal tip As String, ByVal stat As Integer)
        Me.Codigo = cod
        Me.Descricao = descr
        Me.GrupoCodigo = grupCod
        Me.tipo = tip
        Me.Status = stat
    End Sub
#End Region
#Region "Carrega Propriedades"
    Sub carrega(ByVal codigo As Integer)
        Dim tab As DataTable
        Try
            objDAL = New PlanoContasDAL
            tab = objDAL.buscar(codigo, 0)
            If (tab.Rows.Count > 0) Then
                'aqui nao tem sgr_codigo, voce tem que alterar na sua view... nem o grucodigo nao tem na view ve oque é que voce tem que buscar...
                Me.Codigo = Integer.Parse(tab.Rows(0)("ccc_codigo").ToString)
                Me.Descricao = tab.Rows(0)("ccc_descricao").ToString
                Me.GrupoCodigo = tab.Rows(0)("sgr_codigo").ToString
                Me.tipo = tab.Rows(0)("ccc_tipo").ToString
                Me.Status = tab.Rows(0)("sta_codigo").ToString
            End If
        Catch ex As Exception
            Throw ex
        Finally
            ObjDAL = Nothing
        End Try
    End Sub
#End Region
#Region "Limpa Propriedades"
    Sub limpar()
        Me.Codigo = Nothing
        Me.Descricao = Nothing
        Me.GrupoCodigo = Nothing
        Me.tipo = Nothing
        Me.Status = Nothing
    End Sub
#End Region
#Region "Buscar"
    Function buscar(ByVal descricao As String, tipo As Integer) As DataTable
        Dim ret As DataTable
        Try
            objDAL = New PlanoContasDAL
            ret = ObjDAL.buscar(descricao, tipo)
        Catch ex As Exception
            Throw ex
        Finally
            ObjDAL = Nothing
        End Try
        Return ret
    End Function
#End Region
    '#Region "Métodos"
#Region "Inserir"
    Function Inserir() As Boolean
        Try
            If (Trim(Descricao) <> "") Then
                If (objfuncoes.ValidaReplica(Me.Descricao, 0, "Financeiro.Ofi_ClassCentroCusto", "ccc_codigo", "ccc_descricao").Rows.Count = 0) Then
                    objDAL = New PlanoContasDAL
                    Me.Codigo = objDAL.InserirAlterar(Me.Codigo, Me.Descricao, Me.GrupoCodigo, Me.tipo, Me.Status, 1)
                Else : Throw New Exception("Conta já cadastrada, verifique duplicidade!")
                End If
            Else : Throw New Exception("Favor preencher todos os campos obrigatórios")
            End If
        Catch ex As Exception
            Throw ex
        Finally
            objDAL = Nothing
        End Try
        If (Me.Codigo <= 0) Then
            Return False
        Else : Return True
        End If
    End Function

#End Region
#Region "Alterar"
    Function Alterar() As Boolean
        Dim ret As Integer
        Try
            ret = -1

            If Trim(Me.Descricao <> "") Then
                If (objDAL.valExclusaoCliente(Me.Codigo)) Then  'valida cliente
                    If (objDAL.valExclusaoFunci(Me.Codigo)) Then 'valida Funcionario
                        If (objDAL.valExcCtasReceber(Me.Codigo)) Then 'valida Ctas Receber
                            If (objDAL.valExcCtasPagar(Me.Codigo)) Then ' valida Ctas Pagar
                                If (objDAL.valExPrestadores(Me.Codigo)) Then 'Prestadores
                                    If (objDAL.valExFornecedores(Me.Codigo)) Then 'Fornecedores
                                        If (objDAL.valida(Me.Descricao, Me.GrupoCodigo, Me.Codigo)) Then
                                            objDAL = New PlanoContasDAL
                                            ret = objDAL.InserirAlterar(Me.Codigo, Me.Descricao, Me.GrupoCodigo, Me.tipo, Me.Status, 1)
                                        Else : Throw New Exception("Cargo já cadastrado")
                                        End If
                                    Else
                                        MsgBox("A conta " & Me.Descricao & " não pode ser alterada. Verificar utilização em Fornecedores", MsgBoxStyle.Exclamation)
                                    End If
                            Else
                                    MsgBox("A conta " & Me.Descricao & " não pode ser alterada. Verificar utilização em Prestadores", MsgBoxStyle.Exclamation)
                            End If
                        Else
                                MsgBox("A conta " & Me.Descricao & " não pode ser alterada. Verificar utilização em Contas a Pagar", MsgBoxStyle.Exclamation)
                        End If

                    Else
                            MsgBox("A conta " & Me.Descricao & " não pode ser alterada. Verificar utilização em Contas a Receber", MsgBoxStyle.Exclamation)
                    End If

                Else
                        MsgBox("A conta " & Me.Descricao & " não pode ser alterada. Verificar utilização em Funcionários", MsgBoxStyle.Exclamation)
                End If
            Else
                    MsgBox("A conta " & Me.Descricao & " não pode ser alterada. Verificar utilização em Clientes", MsgBoxStyle.Exclamation
                               )
                End If

            Else : MsgBox("Verifique Duplicidade!")
            End If


        Catch ex As Exception
            Throw ex
        Finally
            objDAL = Nothing
        End Try
        If (ret <= 0) Then
            Return False
        Else : Return True
        End If
    End Function
#End Region
#Region "Excluir"
    Function Excluir(ByVal cod As Integer) As Boolean
        Dim ret As Integer
        objDAL = New PlanoContasDAL
        Try
            If (cod > 0) Then
                If (objDAL.valExclusaoCliente(cod)) Then  'valida cliente
                    If (objDAL.valExclusaoFunci(cod)) Then 'valida Funcionario
                        If (objDAL.valExcCtasReceber(cod)) Then 'valida Ctas Receber
                            If (objDAL.valExcCtasPagar(cod)) Then ' valida Ctas Pagar
                                If (objDAL.valExPrestadores(cod)) Then 'Prestadores
                                    If (objDAL.valExFornecedores(cod)) Then 'Fornecedores
                                        ret = objDAL.excluir(cod)
                                        Return True
                                        End
                                    Else
                                        MsgBox("A conta " & Me.Descricao & "  não pode ser excluída. Verificar utilização em Fornecedores", MsgBoxStyle.Exclamation)
                                        Return False
                                    End If
                                Else
                                    MsgBox("A conta " & Me.Descricao & "  não pode ser excluída. Verificar utilização em Prestadores", MsgBoxStyle.Exclamation)
                                End If
                            Else
                                MsgBox("A conta " & Me.Descricao & "  não pode ser excluída. Verificar utilização em Contas a Pagar", MsgBoxStyle.Exclamation)
                            End If

                        Else
                            MsgBox("A conta " & Me.Descricao & "  não pode ser excluída. Verificar utilização em Contas a Receber", MsgBoxStyle.Exclamation)
                        End If

                    Else
                        MsgBox("A conta " & Me.Descricao & "  não pode ser excluída. Verificar utilização em Funcionários", MsgBoxStyle.Exclamation)
                    End If
                Else
                    MsgBox("A conta " & Me.Descricao & "  não pode ser excluída. Verificar utilização em Clientes", MsgBoxStyle.Exclamation
                                   )
                End If

            Else
                MsgBox("Campo vazio", MsgBoxStyle.Exclamation)
            End If
        Catch ex As Exception
            Throw ex : MsgBox("A Conta não pode se excluída ou modificada")
        Finally
            objDAL = Nothing
        End Try
        If (ret <= 0) Then
            Return False
        Else : Return True
        End If
    End Function

#End Region
End Class
